// =======================================================================================
/*!
 * @file    VerInfo.h
 *
 * @brief   Version information functions.
 *
 * @author  Jorge Ramos (jramos at pobox dot com).
 *
 * @version 1.0.0.0 - Aug 06, 2011.
 *          @li Initial version.
 *
 * @remarks Copyright (c) 2011 Jorge Ramos.
 *
 * @remarks This software is provided 'as-is', without any express or implied warranty.
 *          Use it at your own risk. In no event shall the authors or copyright holders
 *          be held liable for any damages arising from the use of this software. Use
 *          and redistribution in source and binary forms, with or without modification,
 *          are permitted. Altered source versions must be plainly marked as such.
 *
 * @remarks This software is distributed in the hope that it will be useful, but WITHOUT
 *          ANY WARRANTY.
 */
// =======================================================================================

#ifndef _VerInfo_H_2F6D4EBA_1A3D_4580_B332_86F4A0215A63_
#define _VerInfo_H_2F6D4EBA_1A3D_4580_B332_86F4A0215A63_

#ifdef _MSC_VER
#pragma once
#endif

//////////////////////////////////////////////////////////////////////////////////////////

#include "Defs.h"

//////////////////////////////////////////////////////////////////////////////////////////

#ifdef __cplusplus
extern "C" {
#endif

//////////////////////////////////////////////////////////////////////////////////////////

INT GetVersionInfoProductMajorPart (VOID);
INT GetVersionInfoProductMinorPart (VOID);
INT GetVersionInfoProductBuildPart (VOID);
INT GetVersionInfoProductRevisionPart (VOID);

__inline INT GetVersionInfoProductMajorRevisionPart (VOID) { return HIWORD (GetVersionInfoProductRevisionPart ()); }
__inline INT GetVersionInfoProductMinorRevisionPart (VOID) { return LOWORD (GetVersionInfoProductRevisionPart ()); }
__inline INT GetVersionInfoProductPrivatePart (VOID) { return GetVersionInfoProductRevisionPart (); }

INT GetVersionInfoFileMajorPart (VOID);
INT GetVersionInfoFileMinorPart (VOID);
INT GetVersionInfoFileBuildPart (VOID);
INT GetVersionInfoFileRevisionPart (VOID);

__inline INT GetVersionInfoFileMajorRevisionPart (VOID) { return HIWORD (GetVersionInfoFileRevisionPart ()); }
__inline INT GetVersionInfoFileMinorRevisionPart (VOID) { return LOWORD (GetVersionInfoFileRevisionPart ()); }
__inline INT GetVersionInfoFilePrivatePart (VOID) { return GetVersionInfoFileRevisionPart (); }

BOOL GetVersionInfoIsPreRelease (VOID);
BOOL GetVersionInfoIsSpecialBuild (VOID);
BOOL GetVersionInfoIsPrivateBuild (VOID);

LPCTSTR GetVersionInfoCompanyName (VOID);
LPCTSTR GetVersionInfoProductName (VOID);
LPCTSTR GetVersionInfoProductVersion (VOID);
LPCTSTR GetVersionInfoLegalCopyright (VOID);
LPCTSTR GetVersionInfoLegalTrademarks (VOID);
LPCTSTR GetVersionInfoComments (VOID);
LPCTSTR GetVersionInfoInternalName (VOID);
LPCTSTR GetVersionInfoOriginalFilename (VOID);
LPCTSTR GetVersionInfoFileDescription (VOID);
LPCTSTR GetVersionInfoFileVersion (VOID);
LPCTSTR GetVersionInfoSpecialBuild (VOID);
LPCTSTR GetVersionInfoPrivateBuild (VOID);

//////////////////////////////////////////////////////////////////////////////////////////

#ifdef __cplusplus
}
#endif

//////////////////////////////////////////////////////////////////////////////////////////

#endif

// =======================================================================================
